home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / icsources.lha / PROGRAMS / FULL SCREEN SCROLL < prev    next >
Encoding:
Text File  |  1990-09-16  |  42.2 KB  |  1,597 lines

  1.      section ax,code_c
  2.     opt c-,d+,w-,o+    
  3.     
  4.     include 'df1:insert/custom registers'
  5.     
  6. badd=((40*8)*256)/8
  7. cadd=56*256
  8.  
  9.     jsr bpinit
  10.     move.w eyes+(badd*4),x1
  11.     move.w eyes+(badd*4)+2,x2
  12.     move.w eyes+(badd*4)+4,x3
  13.     move.w eyes+(badd*4)+6,x4
  14.     move.w eyes+(badd*4)+8,x5
  15.     move.w eyes+(badd*4)+10,x6
  16.     move.w eyes+(badd*4)+12,x7
  17.     move.w eyes+(badd*4)+14,x8
  18.     move.w eyes+(badd*4)+16,x9
  19.     move.w eyes+(badd*4)+18,x10
  20.     move.w eyes+(badd*4)+20,x11
  21.     move.w eyes+(badd*4)+22,x12
  22.     move.w eyes+(badd*4)+24,x13
  23.     move.w eyes+(badd*4)+26,x14
  24.     move.w eyes+(badd*4)+28,x15
  25.     move.w eyes+(badd*4)+30,x16
  26.     
  27.     move.w eyes+(badd*4)+2,y2
  28.     move.w eyes+(badd*4)+4,y3
  29.     move.w eyes+(badd*4)+6,y4
  30.     move.w eyes+(badd*4)+8,y5
  31.     move.w eyes+(badd*4)+10,y6
  32.     move.w eyes+(badd*4)+12,y7
  33.     move.w eyes+(badd*4)+14,y8
  34.     move.w eyes+(badd*4)+16,y9
  35.     move.w eyes+(badd*4)+18,y10
  36.     move.w eyes+(badd*4)+20,y11
  37.     move.w eyes+(badd*4)+22,y12
  38.     move.w eyes+(badd*4)+24,y13
  39.     move.w eyes+(badd*4)+26,y14
  40.     move.w eyes+(badd*4)+28,y15
  41.     move.w eyes+(badd*4)+30,y16
  42.     
  43.     lea $dff000,a6
  44.     move.w #$87e0,dmacon(a6)
  45.     move.l #table,a3
  46.     move.l a3,baz
  47.     jsr cop_init
  48.      move.l $6c,oldirq
  49.      move.l #newirq,$6c
  50.      moveq #0,d0
  51. mse:
  52.      cmp.b #$20,$dff006
  53.      bne mse
  54.      
  55.      btst #6,$bfe001
  56.     bne mse
  57.     move.w #$0f,$dff096
  58.      move.l oldirq,$6c
  59.      move.l copaddr,a0
  60.      move.l oldcop,(a0)
  61.      clr.l d0
  62. nolib:    
  63.      rts    
  64. newirq:  
  65.     movem.l d0-d7/a0-a6,$75000
  66.     
  67.     cmpi.b #1,bogs
  68.     bne zeg
  69.     move.b #0,bogs
  70.     
  71.     addi.b #1,cods
  72.      cmpi.b #1,cods
  73.      bne fredx
  74.      jsr bobsetupa
  75.     jsr bobsetupb
  76.     jsr bobsetupc
  77.     jsr bobsetupd
  78.      jmp freg
  79. fredx:
  80.     cmpi.b #2,cods
  81.     bne fredx1
  82.     jsr bobsetupe
  83.     jsr bobsetupf
  84.     jsr bobsetupc
  85.     jsr bobsetupd
  86.     jmp freg
  87. fredx1:
  88.     cmpi.b #3,cods
  89.     bne fredx2
  90.     jsr bobsetupi
  91.     jsr bobsetupj
  92.     jsr bobsetupc
  93.     jsr bobsetupd
  94.     jmp freg
  95. fregx2:
  96.     cmpi.b #4,cods
  97.     bne fredx2
  98.     jsr bobsetupm
  99.     jsr bobsetupn
  100.     jsr bobsetupc
  101.     jsr bobsetupd
  102.     jmp freg
  103. fredx2:    
  104.      cmpi.b #5,cods
  105.      bne fredx25
  106.      jsr bobsetupq
  107.      jsr bobsetupr
  108.      jsr bobsetupc
  109.      jsr bobsetupd
  110.      jmp freg
  111.      
  112. fredx25:
  113.     cmpi.b #6,cods
  114.     bne fredx3
  115.     jsr bobsetupq
  116.      jsr bobsetupr
  117.      jsr bobsetupc
  118.      jsr bobsetupd
  119.      jmp freg
  120.      
  121.      
  122. fredx3:
  123.      cmpi.b #7,cods
  124.      bne fredx4
  125.      jsr bobsetupm
  126.      jsr bobsetupn
  127.      jsr bobsetupc
  128.      jsr bobsetupd
  129.      jmp freg
  130.      
  131. fredx4:
  132.     cmpi.b #8,cods
  133.     bne fredx5
  134.     jsr bobsetupi
  135.     jsr bobsetupj
  136.     jsr bobsetupc
  137.     jsr bobsetupd
  138.     jmp freg
  139.  
  140. fredx5:
  141.     cmpi.b #9,cods
  142.     bne fredx6
  143.     jsr bobsetupe
  144.     jsr bobsetupf
  145.     jsr bobsetupc
  146.     jsr bobsetupd
  147.     jmp freg
  148. fredx6:
  149.     cmpi.b #10,cods
  150.     bne freg
  151.     jsr bobsetupa
  152.     jsr bobsetupb
  153.     jsr bobsetupc
  154.     jsr bobsetupd
  155.     jmp freg
  156.  
  157. freg:    
  158.  
  159.     cmpi.b #10,cods
  160.     bne zeg
  161.     move.b #0,cods
  162. zeg:    
  163.     
  164.     addi.b #1,bogs
  165.     cmpi.w #$0033,boh
  166.     bne whodo
  167.     move.w #$00ff,boh
  168.     jsr bobsetup
  169.     cmpi.b #1,bogey
  170.     bne who1
  171.     jsr printy
  172.     move.b #0,bogey
  173.     jmp who
  174. who1:    addi.b #1,bogey
  175.     jmp who
  176. whodo:    subi.w #$0044,boh
  177. who:    
  178.     jsr bpmusic
  179.     movem.l $75000,d0-d7/a0-a6
  180.     dc.w $4ef9
  181.     
  182. oldirq: dc.l 0
  183. countx: dc.b 0
  184. baz:    dc.l 0
  185. yaz:    dc.b 0
  186. gook:    dc.b 0
  187. ook:    dc.b 0
  188. bogey:    dc.b 0
  189. tune:    dc.b 0
  190. bogs:    dc.b 0
  191.     even
  192.  
  193. cop_init:
  194.      lea screen,a0
  195.      move.l a0,d0
  196.      move.w d0,lo1
  197.      swap d0
  198.      move.w d0,hi1
  199.      lea screen+cadd,a0
  200.      move.l a0,d0
  201.      move.w d0,lo2
  202.      swap d0
  203.      move.w d0,hi2
  204.      lea screen+cadd*2,a0
  205.      move.l a0,d0
  206.      move.w d0,lo3
  207.      swap d0
  208.      move.w d0,hi3
  209.      lea screen+cadd*3,a0
  210.      move.l a0,d0
  211.      move.w d0,lo4
  212.      swap d0
  213.      move.w d0,hi4
  214.      lea screen+cadd*4,a0
  215.      move.l a0,d0
  216.      move.w d0,lo5
  217.      swap d0
  218.      move.w d0,hi5
  219.      
  220.      moveq #$30,d0
  221.      lea grafname,a1
  222.      move.l $4,a6
  223.      jsr -132(A6)
  224.      move.l $4,A6
  225.      jsr -408(a6)
  226.      tst d0
  227.      beq nolib
  228.      move.l d0,grafbase
  229.      move.l d0,a6
  230.      add.l #$32,d0
  231.      move.l d0,a0
  232.      move.l a0,copaddr
  233.      move.l (a0),oldcop
  234.      move.l #newcop,(a0)
  235.      rts
  236.  
  237.     even
  238.       
  239. grafname: dc.b "graphics.library",0
  240. grafbase: dc.l 0
  241. oldcop:   dc.l 0
  242. copaddr:  dc.l 0
  243. cods:      dc.b 0
  244.  
  245.     even
  246.  
  247. newcop:     dc.w $0100,$4800
  248.      dc.w $0120
  249. sp1l:     dc.w $0000,$0122
  250. sp1h:      dc.w $0000 
  251.      dc.w $0124
  252. sp2l:     dc.w $0000,$0126
  253. sp2h:      dc.w $0000 
  254.      dc.w $0128
  255. sp3l:     dc.w $0000,$012a
  256. sp3h:      dc.w $0000 
  257.      dc.w $012c
  258. sp4l:     dc.w $0000,$012e
  259. sp4h:      dc.w $0000
  260.      dc.w $0130
  261. sp5l:     dc.w $0000,$132
  262. sp5h:      dc.w $0000
  263.  scr:       dc.w $2001,$fffe
  264.       dc.w $00e0
  265.  hi1:     dc.w $0000
  266.      dc.w $00e2
  267.  lo1:     dc.w $0000     
  268.      dc.w $00e4
  269.  hi2:     dc.w $0000
  270.      dc.w $00e6
  271.  lo2:     dc.w $0000 
  272.      dc.w $00e8
  273.  hi3:     dc.w $0000
  274.      dc.w $00ea
  275.  lo3:     dc.w $0000 
  276.      dc.w $00ec
  277.  hi4:     dc.w $0000
  278.      dc.w $00ee
  279.  lo4:     dc.w $0000 
  280.      dc.w $00f0
  281.  hi5:     dc.w $0000
  282.      dc.w $00f2
  283.  lo5:     dc.w $0000
  284.      dc.w $008e,$3021 
  285.      dc.w $0090,$30f1
  286.      dc.w $0092,$0020
  287.      dc.w $0094,$00d8
  288.      dc.w $0108,$0008 
  289.      dc.w $010a,$0008
  290.      dc.w $0180
  291. x1:     dc.w $0000
  292.      dc.w $0182
  293. x2:     dc.w $0000
  294.      dc.w $0184
  295. x3:     dc.w $0000
  296.      dc.w $0186
  297. x4:     dc.w $0000
  298.      dc.w $0188
  299. x5:     dc.w $0000
  300.      dc.w $018a
  301. x6:     dc.w $0000
  302.      dc.w $018c
  303. x7:     dc.w $0000
  304.      dc.w $018e
  305. x8:     dc.w $0000
  306.      dc.w $0190
  307. x9:     dc.w $0000
  308.      dc.w $0192
  309. x10:     dc.w $0000
  310.      dc.w $0194
  311. x11:     dc.w $0000
  312.      dc.w $0196
  313. x12:     dc.w $0000
  314.      dc.w $0198
  315. x13:     dc.w $0000
  316.      dc.w $019a
  317. x14:     dc.w $0000
  318.      dc.w $019c
  319. x15:     dc.w $0000
  320.      dc.w $019e
  321. x16:     dc.w $0000
  322.      dc.w $9001,$fffe
  323.      dc.w $180,$000,$182,$620,$184,$730,$186,$830
  324.      dc.w $188,$940,$18a,$950,$18c,$a60,$18e,$b70,$190,$c90
  325.      dc.w $192,$da0,$194,$ec0,$196,$f00,$198,$f07,$19a,$f0f
  326.      dc.w $19c,$80f,$19e,$00f
  327.      dc.w $9101,$fffe
  328.      dc.w $0180,$0fff
  329.      dc.w $9201,$fffe
  330.      dc.w $0180,$0000
  331.      dc.w $0102
  332. boh:     dc.w $00ff
  333.      dc.w $b801,$fffe
  334.      dc.w $0180,$0fff
  335.      dc.w $0182
  336. y2:     dc.w $0000
  337.      dc.w $0184
  338. y3:     dc.w $0000
  339.      dc.w $0186
  340. y4:     dc.w $0000
  341.      dc.w $0188
  342. y5:     dc.w $0000
  343.      dc.w $018a
  344. y6:     dc.w $0000
  345.      dc.w $018c
  346. y7:     dc.w $0000
  347.      dc.w $018e
  348. y8:     dc.w $0000
  349.      dc.w $0190
  350. y9:     dc.w $0000
  351.      dc.w $0192
  352. y10:     dc.w $0000
  353.      dc.w $0194
  354. y11:     dc.w $0000
  355.      dc.w $0196
  356. y12:     dc.w $0000
  357.      dc.w $0198
  358. y13:     dc.w $0000
  359.      dc.w $019a
  360. y14:     dc.w $0000
  361.      dc.w $019c
  362. y15:     dc.w $0000
  363.      dc.w $019e
  364. y16:     dc.w $0000
  365.      dc.w $b901,$fffe
  366.      dc.w $0180,$0000
  367.      dc.w $0102,$0000
  368.      dc.w $ffff,$fffe
  369.      even
  370.      
  371.     
  372.  
  373. picdata:
  374.      incbin "df1:graphics/cork.chrset.raw"
  375.  
  376. screen:
  377.  
  378. been:
  379.     ds.b 56*256*5
  380.      
  381. bobsetup:
  382.      lea $dff000,a6
  383.      move.l #-1,bltafwm(a6)
  384.      move.w #$09f0,bltcon0(a6)
  385.      clr.w bltcon1(a6)
  386.      clr.w bltamod(a6)
  387.      move.w #56-52,bltdmod(a6)             ;Destination Modulo
  388.      move.w #56-52,bltamod(a6)             ;Source Modulo (Scr Width - bob width)
  389.      move.l #screen-2+(56*100),bltdpt(a6)   ;Destination Start
  390.      move.l #screen+(56*100),bltapt(a6)     ;Source Start
  391.      move.w #%0000100000011010,bltsize(a6) ;Size (Lo 6 Bits Horiz)    
  392.      move.l #screen-2+(56*100)+cadd,bltdpt(a6)   ;Destination Start
  393.      move.l #screen+(56*100)+cadd,bltapt(a6)     ;Source Start
  394.      move.w #%0000100000011010,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  395.      move.l #screen-2+(56*100)+cadd*2,bltdpt(a6)   ;Destination Start
  396.      move.l #screen+(56*100)+cadd*2,bltapt(a6)     ;Source Start
  397.      move.w #%0000100000011010,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  398.      move.l #screen-2+(56*100)+cadd*3,bltdpt(a6)   ;Destination Start
  399.      move.l #screen+(56*100)+cadd*3,bltapt(a6)     ;Source Start
  400.      move.w #%0000100000011010,bltsize(a6) ;Size (Lo 6 Bits Horiz)     
  401.      rts
  402.      
  403.           
  404. bobsetupa:
  405.      lea $dff000,a6
  406.      move.l #-1,bltafwm(a6)
  407.      move.w #$09f0,bltcon0(a6)
  408.      clr.w bltcon1(a6)
  409.      clr.w bltamod(a6)
  410.      move.w #56-8,bltdmod(a6)             ;Destination Modulo
  411.      move.w #40-8,bltamod(a6)             ;Source Modulo (Scr Width - bob width)
  412.      move.l #screen+8+(56*20),bltdpt(a6)   ;Destination Start
  413.      move.l #eyes,bltapt(a6)     ;Source Start
  414.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)    
  415.      move.l #screen+cadd+8+(56*20),bltdpt(a6)   ;Destination Start
  416.      move.l #eyes+badd,bltapt(a6)     ;Source Start
  417.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  418.      move.l #screen+cadd*2+8+(56*20),bltdpt(a6)   ;Destination Start
  419.      move.l #eyes+badd*2,bltapt(a6)     ;Source Start
  420.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  421.      move.l #screen+cadd*3+8+(56*20),bltdpt(a6)   ;Destination Start
  422.      move.l #eyes+badd*3,bltapt(a6)     ;Source Start
  423.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)     
  424.      rts
  425.      
  426. bobsetupb:
  427.      lea $dff000,a6
  428.      move.l #-1,bltafwm(a6)
  429.      move.w #$09f0,bltcon0(a6)
  430.      clr.w bltcon1(a6)
  431.      clr.w bltamod(a6)
  432.      move.w #56-8,bltdmod(a6)             ;Destination Modulo
  433.      move.w #40-8,bltamod(a6)             ;Source Modulo (Scr Width - bob width)
  434.      move.l #screen+34+(56*20),bltdpt(a6)   ;Destination Start
  435.      move.l #eyes+32,bltapt(a6)     ;Source Start
  436.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)    
  437.      move.l #screen+cadd+34+(56*20),bltdpt(a6)   ;Destination Start
  438.      move.l #eyes+badd+32,bltapt(a6)     ;Source Start
  439.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  440.      move.l #screen+cadd*2+34+(56*20),bltdpt(a6)   ;Destination Start
  441.      move.l #eyes+badd*2+32,bltapt(a6)     ;Source Start
  442.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  443.      move.l #screen+cadd*3+34+(56*20),bltdpt(a6)   ;Destination Start
  444.      move.l #eyes+badd*3+32,bltapt(a6)     ;Source Start
  445.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)     
  446.      rts
  447.           
  448.      
  449. bobsetupc:
  450.      lea $dff000,a6
  451.      move.l #-1,bltafwm(a6)
  452.      move.w #$09f0,bltcon0(a6)
  453.      clr.w bltcon1(a6)
  454.      clr.w bltamod(a6)
  455.      move.w #56-8,bltdmod(a6)             ;Destination Modulo
  456.      move.w #56-8,bltamod(a6)             ;Source Modulo (Scr Width - bob width)
  457.      move.l #screen+34+(56*160),bltdpt(a6)   ;Destination Start
  458.      move.l #screen+8+(56*20),bltapt(a6)     ;Source Start
  459.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)    
  460.      move.l #screen+cadd+34+(56*160),bltdpt(a6)   ;Destination Start
  461.      move.l #screen+cadd+8+(56*20),bltapt(a6)     ;Source Start
  462.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  463.      move.l #screen+cadd*2+34+(56*160),bltdpt(a6)   ;Destination Start
  464.      move.l #screen+cadd*2+8+(56*20),bltapt(a6)     ;Source Start
  465.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  466.      move.l #screen+cadd*3+34+(56*160),bltdpt(a6)   ;Destination Start
  467.      move.l #screen+cadd*3+8+(56*20),bltapt(a6)     ;Source Start
  468.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)     
  469.      rts
  470.           
  471.      
  472. bobsetupd:
  473.      lea $dff000,a6
  474.      move.l #-1,bltafwm(a6)
  475.      move.w #$09f0,bltcon0(a6)
  476.      clr.w bltcon1(a6)
  477.      clr.w bltamod(a6)
  478.      move.w #56-8,bltdmod(a6)             ;Destination Modulo
  479.      move.w #56-8,bltamod(a6)             ;Source Modulo (Scr Width - bob width)
  480.      move.l #screen+8+(56*160),bltdpt(a6)   ;Destination Start
  481.      move.l #screen+34+(56*20),bltapt(a6)     ;Source Start
  482.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)    
  483.      move.l #screen+cadd+8+(56*160),bltdpt(a6)   ;Destination Start
  484.      move.l #screen+cadd+34+(56*20),bltapt(a6)     ;Source Start
  485.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  486.      move.l #screen+cadd*2+8+(56*160),bltdpt(a6)   ;Destination Start
  487.      move.l #screen+cadd*2+34+(56*20),bltapt(a6)     ;Source Start
  488.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  489.      move.l #screen+cadd*3+8+(56*160),bltdpt(a6)   ;Destination Start
  490.      move.l #screen+cadd*3+34+(56*20),bltapt(a6)     ;Source Start
  491.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)     
  492.      rts
  493.           
  494. bobsetupe:
  495.      lea $dff000,a6
  496.      move.l #-1,bltafwm(a6)
  497.      move.w #$09f0,bltcon0(a6)
  498.      clr.w bltcon1(a6)
  499.      clr.w bltamod(a6)
  500.      move.w #56-8,bltdmod(a6)             ;Destination Modulo
  501.      move.w #40-8,bltamod(a6)             ;Source Modulo (Scr Width - bob width)
  502.      move.l #screen+8+(56*20),bltdpt(a6)   ;Destination Start
  503.      move.l #eyes+8,bltapt(a6)     ;Source Start
  504.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)    
  505.      move.l #screen+cadd+8+(56*20),bltdpt(a6)   ;Destination Start
  506.      move.l #eyes+badd+8,bltapt(a6)     ;Source Start
  507.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  508.      move.l #screen+cadd*2+8+(56*20),bltdpt(a6)   ;Destination Start
  509.      move.l #eyes+badd*2+8,bltapt(a6)     ;Source Start
  510.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  511.      move.l #screen+cadd*3+8+(56*20),bltdpt(a6)   ;Destination Start
  512.      move.l #eyes+badd*3+8,bltapt(a6)     ;Source Start
  513.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)     
  514.      rts
  515.      
  516. bobsetupf:
  517.      lea $dff000,a6
  518.      move.l #-1,bltafwm(a6)
  519.      move.w #$09f0,bltcon0(a6)
  520.      clr.w bltcon1(a6)
  521.      clr.w bltamod(a6)
  522.      move.w #56-8,bltdmod(a6)             ;Destination Modulo
  523.      move.w #40-8,bltamod(a6)             ;Source Modulo (Scr Width - bob width)
  524.      move.l #screen+34+(56*20),bltdpt(a6)   ;Destination Start
  525.      move.l #eyes+24,bltapt(a6)     ;Source Start
  526.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)    
  527.      move.l #screen+cadd+34+(56*20),bltdpt(a6)   ;Destination Start
  528.      move.l #eyes+badd+24,bltapt(a6)     ;Source Start
  529.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  530.      move.l #screen+cadd*2+34+(56*20),bltdpt(a6)   ;Destination Start
  531.      move.l #eyes+badd*2+24,bltapt(a6)     ;Source Start
  532.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  533.      move.l #screen+cadd*3+34+(56*20),bltdpt(a6)   ;Destination Start
  534.      move.l #eyes+badd*3+24,bltapt(a6)     ;Source Start
  535.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)     
  536.      rts
  537.      
  538.      
  539.  
  540. bobsetupi:
  541.      lea $dff000,a6
  542.      move.l #-1,bltafwm(a6)
  543.      move.w #$09f0,bltcon0(a6)
  544.      clr.w bltcon1(a6)
  545.      clr.w bltamod(a6)
  546.      move.w #56-8,bltdmod(a6)             ;Destination Modulo
  547.      move.w #40-8,bltamod(a6)             ;Source Modulo (Scr Width - bob width)
  548.      move.l #screen+8+(56*20),bltdpt(a6)   ;Destination Start
  549.      move.l #eyes+16,bltapt(a6)     ;Source Start
  550.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)    
  551.      move.l #screen+cadd+8+(56*20),bltdpt(a6)   ;Destination Start
  552.      move.l #eyes+badd+16,bltapt(a6)     ;Source Start
  553.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  554.      move.l #screen+cadd*2+8+(56*20),bltdpt(a6)   ;Destination Start
  555.      move.l #eyes+badd*2+16,bltapt(a6)     ;Source Start
  556.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  557.      move.l #screen+cadd*3+8+(56*20),bltdpt(a6)   ;Destination Start
  558.      move.l #eyes+badd*3+16,bltapt(a6)     ;Source Start
  559.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)     
  560.      rts
  561.      
  562. bobsetupj:
  563.      lea $dff000,a6
  564.      move.l #-1,bltafwm(a6)
  565.      move.w #$09f0,bltcon0(a6)
  566.      clr.w bltcon1(a6)
  567.      clr.w bltamod(a6)
  568.      move.w #56-8,bltdmod(a6)             ;Destination Modulo
  569.      move.w #40-8,bltamod(a6)             ;Source Modulo (Scr Width - bob width)
  570.      move.l #screen+34+(56*20),bltdpt(a6)   ;Destination Start
  571.      move.l #eyes+16,bltapt(a6)     ;Source Start
  572.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)    
  573.      move.l #screen+cadd+34+(56*20),bltdpt(a6)   ;Destination Start
  574.      move.l #eyes+badd+16,bltapt(a6)     ;Source Start
  575.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  576.      move.l #screen+cadd*2+34+(56*20),bltdpt(a6)   ;Destination Start
  577.      move.l #eyes+badd*2+16,bltapt(a6)     ;Source Start
  578.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  579.      move.l #screen+cadd*3+34+(56*20),bltdpt(a6)   ;Destination Start
  580.      move.l #eyes+badd*3+16,bltapt(a6)     ;Source Start
  581.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)     
  582.      rts
  583.      
  584.  
  585. bobsetupm:
  586.      lea $dff000,a6
  587.      move.l #-1,bltafwm(a6)
  588.      move.w #$09f0,bltcon0(a6)
  589.      clr.w bltcon1(a6)
  590.      clr.w bltamod(a6)
  591.      move.w #56-8,bltdmod(a6)             ;Destination Modulo
  592.      move.w #40-8,bltamod(a6)             ;Source Modulo (Scr Width - bob width)
  593.      move.l #screen+8+(56*20),bltdpt(a6)   ;Destination Start
  594.      move.l #eyes+24,bltapt(a6)     ;Source Start
  595.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)    
  596.      move.l #screen+cadd+8+(56*20),bltdpt(a6)   ;Destination Start
  597.      move.l #eyes+badd+24,bltapt(a6)     ;Source Start
  598.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  599.      move.l #screen+cadd*2+8+(56*20),bltdpt(a6)   ;Destination Start
  600.      move.l #eyes+badd*2+24,bltapt(a6)     ;Source Start
  601.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  602.      move.l #screen+cadd*3+8+(56*20),bltdpt(a6)   ;Destination Start
  603.      move.l #eyes+badd*3+24,bltapt(a6)     ;Source Start
  604.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)     
  605.      rts
  606.      
  607. bobsetupn:
  608.      lea $dff000,a6
  609.      move.l #-1,bltafwm(a6)
  610.      move.w #$09f0,bltcon0(a6)
  611.      clr.w bltcon1(a6)
  612.      clr.w bltamod(a6)
  613.      move.w #56-8,bltdmod(a6)             ;Destination Modulo
  614.      move.w #40-8,bltamod(a6)             ;Source Modulo (Scr Width - bob width)
  615.      move.l #screen+34+(56*20),bltdpt(a6)   ;Destination Start
  616.      move.l #eyes+8,bltapt(a6)     ;Source Start
  617.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)    
  618.      move.l #screen+cadd+34+(56*20),bltdpt(a6)   ;Destination Start
  619.      move.l #eyes+badd+8,bltapt(a6)     ;Source Start
  620.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  621.      move.l #screen+cadd*2+34+(56*20),bltdpt(a6)   ;Destination Start
  622.      move.l #eyes+badd*2+8,bltapt(a6)     ;Source Start
  623.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  624.      move.l #screen+cadd*3+34+(56*20),bltdpt(a6)   ;Destination Start
  625.      move.l #eyes+badd*3+8,bltapt(a6)     ;Source Start
  626.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)     
  627.      rts
  628.      
  629. bobsetupq:
  630.      lea $dff000,a6
  631.      move.l #-1,bltafwm(a6)
  632.      move.w #$09f0,bltcon0(a6)
  633.      clr.w bltcon1(a6)
  634.      clr.w bltamod(a6)
  635.      move.w #56-8,bltdmod(a6)             ;Destination Modulo
  636.      move.w #40-8,bltamod(a6)             ;Source Modulo (Scr Width - bob width)
  637.      move.l #screen+8+(56*20),bltdpt(a6)   ;Destination Start
  638.      move.l #eyes+32,bltapt(a6)     ;Source Start
  639.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)    
  640.      move.l #screen+cadd+8+(56*20),bltdpt(a6)   ;Destination Start
  641.      move.l #eyes+badd+32,bltapt(a6)     ;Source Start
  642.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  643.      move.l #screen+cadd*2+8+(56*20),bltdpt(a6)   ;Destination Start
  644.      move.l #eyes+badd*2+32,bltapt(a6)     ;Source Start
  645.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  646.      move.l #screen+cadd*3+8+(56*20),bltdpt(a6)   ;Destination Start
  647.      move.l #eyes+badd*3+32,bltapt(a6)     ;Source Start
  648.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)     
  649.      rts
  650.           
  651. bobsetupr:
  652.      lea $dff000,a6
  653.      move.l #-1,bltafwm(a6)
  654.      move.w #$09f0,bltcon0(a6)
  655.      clr.w bltcon1(a6)
  656.      clr.w bltamod(a6)
  657.      move.w #56-8,bltdmod(a6)             ;Destination Modulo
  658.      move.w #40-8,bltamod(a6)             ;Source Modulo (Scr Width - bob width)
  659.      move.l #screen+34+(56*20),bltdpt(a6)   ;Destination Start
  660.      move.l #eyes,bltapt(a6)     ;Source Start
  661.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)    
  662.      move.l #screen+cadd+34+(56*20),bltdpt(a6)   ;Destination Start
  663.      move.l #eyes+badd,bltapt(a6)     ;Source Start
  664.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  665.      move.l #screen+cadd*2+34+(56*20),bltdpt(a6)   ;Destination Start
  666.      move.l #eyes+badd*2,bltapt(a6)     ;Source Start
  667.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)
  668.      move.l #screen+cadd*3+34+(56*20),bltdpt(a6)   ;Destination Start
  669.      move.l #eyes+badd*3,bltapt(a6)     ;Source Start
  670.      move.w #%0000111100000100,bltsize(a6) ;Size (Lo 6 Bits Horiz)     
  671.      rts     
  672.      
  673. printy:
  674.      move.l baz,a3
  675.      move.b (a3),yaz
  676.      move.b (a3)+,ook
  677.      move.l a3,baz
  678.      cmpi.b #0,yaz
  679.      bne frek
  680.      move.l #table,a3
  681.      move.l a3,baz
  682.      jmp ik
  683. frek:
  684.      cmpi.b #65,yaz  ;A
  685.      bne char2
  686. char1:     
  687.      move.l #picdata,v1+2
  688.      move.l #picdata+badd,v2+2
  689.      move.l #picdata+badd*2,v3+2
  690.      move.l #picdata+badd*3,v4+2
  691.      jmp ik
  692. char2:   
  693.      cmpi.b #66,yaz  ;B
  694.      bne char3
  695.       move.l #picdata+4,v1+2
  696.       move.l #picdata+badd+4,v2+2
  697.      move.l #picdata+badd*2+4,v3+2
  698.      move.l #picdata+badd*3+4,v4+2
  699.      jmp ik
  700. char3:
  701.       cmpi.b #67,yaz  ;C
  702.      bne char4
  703.       move.l #picdata+8,v1+2
  704.       move.l #picdata+badd+8,v2+2
  705.      move.l #picdata+badd*2+8,v3+2
  706.      move.l #picdata+badd*3+8,v4+2
  707.      jmp ik
  708. char4:
  709.       cmpi.b #68,yaz  ;D
  710.      bne char5
  711.       move.l #picdata+12,v1+2
  712.       move.l #picdata+badd+12,v2+2
  713.      move.l #picdata+badd*2+12,v3+2
  714.      move.l #picdata+badd*3+12,v4+2
  715.      jmp ik
  716. char5:
  717.      cmpi.b #69,yaz  ;E
  718.      bne char6
  719.       move.l #picdata+16,v1+2
  720.       move.l #picdata+badd+16,v2+2
  721.      move.l #picdata+badd*2+16,v3+2
  722.      move.l #picdata+badd*3+16,v4+2
  723.      jmp ik
  724. char6:
  725.       cmpi.b #70,yaz  ;F
  726.      bne char7
  727.       move.l #picdata+20,v1+2
  728.       move.l #picdata+badd+20,v2+2
  729.      move.l #picdata+badd*2+20,v3+2
  730.      move.l #picdata+badd*3+20,v4+2
  731.      jmp ik
  732. char7:    
  733.      cmpi.b #71,yaz  ;G
  734.      bne char8
  735.       move.l #picdata+24,v1+2
  736.       move.l #picdata+badd+24,v2+2
  737.      move.l #picdata+badd*2+24,v3+2
  738.      move.l #picdata+badd*3+24,v4+2
  739.      jmp ik 
  740. char8:
  741.      cmpi.b #72,yaz  ;H
  742.      bne char9
  743.       move.l #picdata+28,v1+2
  744.       move.l #picdata+badd+28,v2+2
  745.      move.l #picdata+badd*2+28,v3+2
  746.      move.l #picdata+badd*3+28,v4+2
  747.      jmp ik 
  748. char9:
  749.      cmpi.b #73,yaz  ;I
  750.      bne char10
  751.       move.l #picdata+32,v1+2
  752.       move.l #picdata+badd+32,v2+2
  753.      move.l #picdata+badd*2+32,v3+2
  754.      move.l #picdata+badd*3+32,v4+2
  755.      jmp ik
  756. char10:
  757.      cmpi.b #74,yaz  ;J
  758.      bne char11
  759.       move.l #picdata+36,v1+2
  760.       move.l #picdata+badd+36,v2+2
  761.      move.l #picdata+badd*2+36,v3+2
  762.      move.l #picdata+badd*3+36,v4+2
  763.      jmp ik
  764. char11:
  765.      cmpi.b #75,yaz  ;K
  766.      bne char12
  767.       move.l #picdata+1280,v1+2
  768.       move.l #picdata+badd+1280,v2+2
  769.      move.l #picdata+badd*2+1280,v3+2
  770.      move.l #picdata+badd*3+1280,v4+2
  771.      jmp ik
  772. char12:
  773.      cmpi.b #76,yaz  ;L
  774.      bne char13
  775.       move.l #picdata+1280+4,v1+2
  776.       move.l #picdata+badd+1280+4,v2+2
  777.      move.l #picdata+badd*2+1280+4,v3+2
  778.      move.l #picdata+badd*3+1280+4,v4+2
  779.      jmp ik
  780. char13:
  781.      cmpi.b #77,yaz  ;M
  782.      bne char14
  783.       move.l #picdata+1280+8,v1+2
  784.       move.l #picdata+badd+1280+8,v2+2
  785.      move.l #picdata+badd*2+1280+8,v3+2
  786.      move.l #picdata+badd*3+1280+8,v4+2
  787.      jmp ik
  788. char14:  
  789.      cmpi.b #78,yaz  ;N
  790.      bne char15
  791.       move.l #picdata+1280+12,v1+2
  792.       move.l #picdata+badd+1280+12,v2+2
  793.      move.l #picdata+badd*2+1280+12,v3+2
  794.      move.l #picdata+badd*3+1280+12,v4+2
  795.      jmp ik
  796. char15:
  797.       cmpi.b #79,yaz  ;O
  798.      bne char16
  799.       move.l #picdata+1280+16,v1+2
  800.       move.l #picdata+badd+1280+16,v2+2
  801.      move.l #picdata+badd*2+1280+16,v3+2
  802.      move.l #picdata+badd*3+1280+16,v4+2
  803.      jmp ik
  804. char16:
  805.      cmpi.b #80,yaz  ;P
  806.      bne char17
  807.       move.l #picdata+1280+20,v1+2
  808.       move.l #picdata+badd+1280+20,v2+2
  809.      move.l #picdata+badd*2+1280+20,v3+2
  810.      move.l #picdata+badd*3+1280+20,v4+2
  811.      jmp ik
  812. char17:
  813.      cmpi.b #81,yaz  ;Q
  814.      bne char18
  815.       move.l #picdata+1280+24,v1+2
  816.       move.l #picdata+badd+1280+24,v2+2
  817.      move.l #picdata+badd*2+1280+24,v3+2
  818.      move.l #picdata+badd*3+1280+24,v4+2
  819.      jmp ik
  820. char18:
  821.       cmpi.b #82,yaz  ;R
  822.      bne char19
  823.       move.l #picdata+1280+28,v1+2
  824.       move.l #picdata+badd+1280+28,v2+2
  825.      move.l #picdata+badd*2+1280+28,v3+2
  826.      move.l #picdata+badd*3+1280+28,v4+2
  827.      jmp ik
  828. char19:
  829.      cmpi.b #83,yaz  ;S
  830.      bne char20
  831.       move.l #picdata+1280+32,v1+2
  832.       move.l #picdata+badd+1280+32,v2+2
  833.      move.l #picdata+badd*2+1280+32,v3+2
  834.      move.l #picdata+badd*3+1280+32,v4+2
  835.      jmp ik
  836. char20:
  837.      cmpi.b #84,yaz  ;T
  838.      bne char21
  839.       move.l #picdata+1280+36,v1+2
  840.       move.l #picdata+badd+1280+36,v2+2
  841.      move.l #picdata+badd*2+1280+36,v3+2
  842.      move.l #picdata+badd*3+1280+36,v4+2
  843.      jmp ik
  844. char21:
  845.      cmpi.b #85,yaz  ;U
  846.      bne char22
  847.       move.l #picdata+2560,v1+2
  848.       move.l #picdata+badd+2560,v2+2
  849.      move.l #picdata+badd*2+2560,v3+2
  850.      move.l #picdata+badd*3+2560,v4+2
  851.      jmp ik
  852. char22:
  853.      cmpi.b #86,yaz  ;V
  854.      bne char23
  855.       move.l #picdata+2560+4,v1+2
  856.       move.l #picdata+badd+2560+4,v2+2
  857.      move.l #picdata+badd*2+2560+4,v3+2
  858.      move.l #picdata+badd*3+2560+4,v4+2
  859.      jmp ik
  860. char23:
  861.      cmpi.b #87,yaz  ;W
  862.      bne char24
  863.       move.l #picdata+2560+8,v1+2
  864.       move.l #picdata+badd+2560+8,v2+2
  865.      move.l #picdata+badd*2+2560+8,v3+2
  866.      move.l #picdata+badd*3+2560+8,v4+2
  867.      jmp ik
  868. char24:
  869.      cmpi.b #88,yaz  ;X
  870.      bne char25
  871.       move.l #picdata+2560+12,v1+2
  872.       move.l #picdata+badd+2560+12,v2+2
  873.      move.l #picdata+badd*2+2560+12,v3+2
  874.      move.l #picdata+badd*3+2560+12,v4+2
  875.      jmp ik
  876. char25:
  877.      cmpi.b #89,yaz  ;Y
  878.      bne char26
  879.       move.l #picdata+2560+16,v1+2
  880.       move.l #picdata+badd+2560+16,v2+2
  881.      move.l #picdata+badd*2+2560+16,v3+2
  882.      move.l #picdata+badd*3+2560+16,v4+2
  883.      jmp ik    
  884. char26:
  885.      cmpi.b #90,yaz  ;Z
  886.      bne char27
  887.       move.l #picdata+2560+20,v1+2
  888.       move.l #picdata+badd+2560+20,v2+2
  889.      move.l #picdata+badd*2+2560+20,v3+2
  890.      move.l #picdata+badd*3+2560+20,v4+2
  891.      jmp ik    
  892. char27:
  893.      cmpi.b #32,yaz  ;SPACE
  894.      bne char32
  895.       move.l #picdata+5120+24,v1+2
  896.       move.l #picdata+badd+5120+24,v2+2
  897.      move.l #picdata+badd*2+5120+24,v3+2
  898.      move.l #picdata+badd*3+5120+24,v4+2
  899.      jmp ik    
  900.  
  901. char32:
  902.       cmpi.b #46,yaz  ;. = BEER
  903.      bne char33
  904.       move.l #picdata+2560+1280+24,v1+2
  905.       move.l #picdata+badd+2560+1280+24,v2+2
  906.      move.l #picdata+badd*2+2560+1280+24,v3+2
  907.      move.l #picdata+badd*3+2560+1280+24,v4+2
  908.      jmp ik
  909. char33:
  910.      cmpi.b #48,yaz  ;0 
  911.      bne char34
  912.       move.l #picdata+2560+24,v1+2
  913.       move.l #picdata+badd+2560+24,v2+2
  914.      move.l #picdata+badd*2+2560+24,v3+2
  915.      move.l #picdata+badd*3+2560+24,v4+2
  916.      jmp ik
  917. char34:
  918.      cmpi.b #49,yaz  ;1 
  919.      bne char35
  920.       move.l #picdata+2560+28,v1+2
  921.       move.l #picdata+badd+2560+28,v2+2
  922.      move.l #picdata+badd*2+2560+28,v3+2
  923.      move.l #picdata+badd*3+2560+28,v4+2
  924.      jmp ik    
  925. char35:
  926.      cmpi.b #50,yaz  ;2 
  927.      bne char36
  928.       move.l #picdata+2560+32,v1+2
  929.       move.l #picdata+badd+2560+32,v2+2
  930.      move.l #picdata+badd*2+2560+32,v3+2
  931.      move.l #picdata+badd*3+2560+32,v4+2
  932.      jmp ik        
  933.      
  934. char36:
  935.      cmpi.b #51,yaz  ;3 
  936.      bne char37
  937.       move.l #picdata+2560+36,v1+2
  938.       move.l #picdata+badd+2560+36,v2+2
  939.      move.l #picdata+badd*2+2560+36,v3+2
  940.      move.l #picdata+badd*3+2560+36,v4+2
  941.      jmp ik        
  942. char37:
  943.      cmpi.b #52,yaz  ;4
  944.      bne char38
  945.       move.l #picdata+2560+2560+4,v1+2
  946.       move.l #picdata+badd+2560+2560+4,v2+2
  947.      move.l #picdata+badd*2+2560+2560+4,v3+2
  948.      move.l #picdata+badd*3+2560+2560+4,v4+2
  949.      jmp ik
  950. char38:
  951.      cmpi.b #53,yaz  ;5
  952.      bne char39
  953.       move.l #picdata+2560+1280,v1+2
  954.       move.l #picdata+badd+2560+1280,v2+2
  955.      move.l #picdata+badd*2+2560+1280,v3+2
  956.      move.l #picdata+badd*3+2560+1280,v4+2
  957.      jmp ik
  958. char39:
  959.      cmpi.b #54,yaz  ;6
  960.      bne char40
  961.       move.l #picdata+2560+1280+4,v1+2
  962.       move.l #picdata+badd+2560+1280+4,v2+2
  963.      move.l #picdata+badd*2+2560+1280+4,v3+2
  964.      move.l #picdata+badd*3+2560+1280+4,v4+2
  965.      jmp ik     
  966. char40:
  967.      cmpi.b #55,yaz  ;7
  968.      bne char41
  969.       move.l #picdata+2560+1280+8,v1+2
  970.       move.l #picdata+badd+2560+1280+8,v2+2
  971.      move.l #picdata+badd*2+2560+1280+8,v3+2
  972.      move.l #picdata+badd*3+2560+1280+8,v4+2
  973.      jmp ik         
  974. char41:
  975.      cmpi.b #56,yaz  ;8
  976.      bne char42
  977.       move.l #picdata+2560+1280+12,v1+2
  978.       move.l #picdata+badd+2560+1280+12,v2+2
  979.      move.l #picdata+badd*2+2560+1280+12,v3+2
  980.      move.l #picdata+badd*3+2560+1280+12,v4+2
  981.      jmp ik     
  982. char42:
  983.      cmpi.b #57,yaz  ;9
  984.      bne char43
  985.      move.l #picdata+2560+1280+16,v1+2
  986.       move.l #picdata+badd+2560+1280+16,v2+2
  987.      move.l #picdata+badd*2+2560+1280+16,v3+2
  988.      move.l #picdata+badd*3+2560+1280+16,v4+2
  989.      jmp ik    
  990.      
  991. char43:
  992.      cmpi.b #91,yaz  ;ZARCH IS INNOCENT = [
  993.      bne char44
  994.      move.l #picdata+2560+1280+20,v1+2
  995.       move.l #picdata+badd+2560+1280+20,v2+2
  996.      move.l #picdata+badd*2+2560+1280+20,v3+2
  997.      move.l #picdata+badd*3+2560+1280+20,v4+2
  998.      jmp ik     
  999.  
  1000. char44:
  1001.      cmpi.b #93,yaz  ;' = ]
  1002.      bne char47
  1003.     
  1004.      jmp ik    
  1005.  
  1006. char47:
  1007. ik:    
  1008.      lea $dff000,a6
  1009.      move.l #-1,bltafwm(a6)
  1010.      move.w #$09f0,bltcon0(a6)
  1011.      clr.w bltcon1(a6)
  1012.      clr.w bltamod(a6)
  1013.      move.w #56-4,bltdmod(a6)               ;Destination Modulo
  1014.      move.w #40-4,bltamod(a6)               ;Source Modulo (Scr Width - bob width)
  1015.      move.l #screen+48+(56*100),bltdpt(a6)   ;Destination Start
  1016. v1:     move.l #picdata,bltapt(a6)               ;Source Start
  1017.     move.w #%0000100000000010,bltsize(a6)
  1018.      move.l #screen+48+(56*100)+cadd,bltdpt(a6)   ;Destination Start
  1019. v2:     move.l #picdata+badd,bltapt(a6)               ;Source Start
  1020.     move.w #%0000100000000010,bltsize(a6)
  1021.       move.l #screen+48+(56*100)+cadd*2,bltdpt(a6)   ;Destination Start
  1022. v3:     move.l #picdata+badd*2,bltapt(a6)               ;Source Start
  1023.     move.w #%0000100000000010,bltsize(a6)
  1024.      move.l #screen+48+(56*100)+cadd*3,bltdpt(a6)   ;Destination Start
  1025. v4:     move.l #picdata+badd*3,bltapt(a6)               ;Source Start
  1026.     move.w #%0000100000000010,bltsize(a6)
  1027.      rts
  1028.      
  1029. baj:     move.b #0,gook
  1030.      rts
  1031. table:
  1032.     ;dc.b 'INNER CITY  PROUDLY PRESENT     .REVELUTION.      '
  1033.     ;dc.b 'CODER BY .AX. GRAPHIICS BY .GIZ. QUESTIONS BY .POD.'
  1034.     ;dc.b '     INSTRUSTIONS  F1 MUSIC ON F10 SOUND FX  ...   '
  1035.      dc.b 'GREETINGS GO OUT TO THE FOLLOWING GROUPS RANDOM [[[[[ SCOOPEX REACTOR CRYPTIC UK SLIPSTREAM ANARCHY MAG FIELDS SAE MODESTY  '
  1036.      dc.b ' QUARTEX CLASSIC SKID ROW PENDEL EUROPA BLACK BOX AUTOMATION PARADOX EXTREAM MIGHTY DRUIDS ORACLE POWERLORDS '                         
  1037.      DC.B 'MEGA GREETING`S GO TO.AX. .COSY. .WAZ. .OPEL.[ZARCH[ .SCOOTER. .MIKE. .PLUNDERER & TONY. .MR BIG JUDGE DROKK. .JROK 90. .OMAR & MOSES.'
  1038.      DC.B '.DEMOLISHER. .BOB. .ANDY STEVE. ....KID VIDEO ( WHERE`S MY VID`S).... .FANGS ( YOU LAZY CUNT GET CODING ). FAST EDDIE. .TEKNO TISKY. .CRAZY LEGS. .CASP ( CASP KEEP UP WITH THE GOOD MUSIC ).'
  1039.      DC.B '.ADS (I WILL COME AND VISIT YOU IN THE NIK ). .RICK (SO WE GOT THE DEMO`S FINISHED). .QED (YOU TIGHT CUNT GET YOU COMPUTER). .DOMINO (HOW`S THE BBS COMING ON). THE ENGINER (ADS HAS GOT THE UTILITY). .DAX (KEEP CODING)'
  1040.      DC.B ' .REEBOK (IT`S UP TO YOU)..................'
  1041.      DC.B ' SO THAT`S THE END OF MY GREETING`S TO DAY I WILL PASS THE KEY BOARD ON TO RICK NOW SO BY FOR POD OF THE MIGHTY INNER CITY'              
  1042.      dc.b ' BY THE WAY THE INTRO PICTURES TAKEN FROM THE MOVIE HIGHLANDER DIGITIZED BY POD AND AX '
  1043.      dc.b '                                                  '
  1044.      dc.b 'INTRO BY AX     GRAPHIX BY GIZ                    '
  1045.      dc.b 0
  1046.      
  1047.      even    
  1048.  
  1049. eyes:
  1050.      incbin 'df1:graphics/eyes.raw'
  1051.      
  1052.      even
  1053.  
  1054.  
  1055. bpinit:        lea samples(pc),a0
  1056.         lea bpsong(pc),a1
  1057.         clr.b numtables
  1058.         cmpi.w #'V.',26(a1)
  1059.         bne.s bpnotv2  
  1060.         cmpi.b #'2',28(a1)
  1061.         bne.s bpnotv2
  1062.         move.b 29(a1),numtables
  1063. bpnotv2:    move.l #512,d0
  1064.         move.w 30(a1),d1        ;d1 now contains length in steps
  1065.         moveq.l #1,d2             ;1 is highest pattern number
  1066.         mulu #4,d1             ;4 voices per step
  1067.         subq.w #1,d1             ;correction for DBRA
  1068. findhighest:    cmp.w (a1,d0),d2        ;Is it higher
  1069.         bge.s nothigher            ;No
  1070.         move.w (a1,d0),d2        ;Yes, so let D2 be highest
  1071. nothigher:    addq.l #4,d0             ;Next Voice
  1072.         dbra d1,findhighest        ;And search
  1073.         move.w 30(a1),d1
  1074.         mulu #16,d1             ;16 bytes per step
  1075.         move.l #512,d0             ;header is 512 bytes
  1076.         mulu #48,d2             ;48 bytes per pattern
  1077.         add.l d2,d0
  1078.         add.l d1,d0             ;offset for samples
  1079.         add.l #bpsong,d0
  1080.         move.l d0,tables
  1081.         moveq.l #0,d1
  1082.         move.b numtables,d1        ;Number of tables
  1083.         lsl.l #6,d1             ;x 64
  1084.         add.l d1,d0
  1085.         move.l #14,d1             ;15 samples
  1086.         add.l #32,a1
  1087. initloop:    move.l d0,(a0)+
  1088.         cmpi.b #$ff,(a1)
  1089.         beq.s bpissynth
  1090.         move.w 24(a1),d2
  1091.         mulu #2,d2             ;Length is in words
  1092.         add.l d2,d0             ;offset next sample
  1093. bpissynth:    add.l #32,a1             ;Length of Sample Part in header
  1094.         dbra d1,initloop
  1095.         rts
  1096. bpmusic:    bsr bpsynth
  1097.         subq.b #1,arpcount
  1098.         moveq.l #3,d0
  1099.         lea bpcurrent(pc),a0
  1100.         move.l #$dff0a0,a1
  1101. bploop1:    move.b 12(a0),d4
  1102.         ext.w d4
  1103.         add.w d4,(a0)
  1104.         tst.b $1e(a0)
  1105.         bne.s bplfo
  1106.         move.w (a0),6(a1)
  1107. bplfo:        move.l 4(a0),(a1)
  1108.         move.w 8(a0),4(a1)
  1109.         tst.b 11(a0)
  1110.         bne.s bpdoarp
  1111.         tst.b 13(a0)
  1112.         beq.s not2
  1113. bpdoarp:    tst.b arpcount
  1114.         bne.s not0
  1115.         move.b 11(a0),d3
  1116.         move.b 13(a0),d4
  1117.         and.w #240,d4
  1118.         and.w #240,d3
  1119.         lsr.w #4,d3
  1120.         lsr.w #4,d4
  1121.         add.w d3,d4
  1122.         add.b 10(a0),d4
  1123.         bsr bpplayarp
  1124.         bra.s not2
  1125. not0:        cmpi.b #1,arpcount 
  1126.         bne.s not1
  1127.         move.b 11(a0),d3
  1128.         move.b 13(a0),d4
  1129.         and.w #15,d3
  1130.         and.w #15,d4
  1131.         add.w d3,d4
  1132.         add.b 10(a0),d4
  1133.         bsr bpplayarp
  1134.         bra.s not2
  1135. not1:        move.b 10(a0),d4
  1136.         bsr bpplayarp
  1137. not2:        lea $10(a1),a1
  1138.         lea $20(a0),a0
  1139.         dbra d0,bploop1
  1140.         tst.b arpcount
  1141.         bne.s arpnotzero
  1142.         move.b #3,arpcount
  1143. arpnotzero:    subq.b #1,bpcount
  1144.         beq.s bpskip1
  1145.         rts
  1146. bpskip1:    move.b bpdelay,bpcount
  1147. bpplay:        bsr.s bpnext
  1148.         move.w dma,$dff096
  1149.         ;move.l #$1f4,d0        ;is this a waste ?????
  1150. bpxx:        ;dbra d0,bpxx
  1151.         moveq.l #3,d0
  1152.         move.l #$dff0a0,a1
  1153.         moveq.w #1,d1
  1154.         lea bpcurrent(pc),a2
  1155.         lea bpbuffer(pc),a5
  1156. bploop2:    btst #15,(a2)
  1157.         beq.s bpskip7
  1158.         bsr bpplayit
  1159. bpskip7:    asl.w #1,d1
  1160.         lea $10(a1),a1
  1161.         lea $20(a2),a2
  1162.         lea $24(a5),a5
  1163.         dbra d0,bploop2
  1164.         rts
  1165. bpnext:        clr.w dma
  1166.         lea bpsong(pc),a0
  1167.         move.l #$dff0a0,a3
  1168.         moveq.l #3,d0
  1169.         moveq.w #1,d7
  1170.         lea bpcurrent(pc),a1
  1171. bploop3:    moveq.l #0,d1
  1172.         move.w bpstep,d1
  1173.         lsl.w #4,d1
  1174.         move.l d0,d2
  1175.         lsl.l #2,d2
  1176.         add.l d2,d1
  1177.         add.l #512,d1
  1178.         move.w (a0,d1),d2
  1179.         move.b 2(a0,d1),st
  1180.         move.b 3(a0,d1),tr
  1181.         subq.w #1,d2
  1182.         mulu #48,d2
  1183.         moveq.l #0,d3
  1184.         move.w 30(a0),d3
  1185.         lsl.w #4,d3
  1186.         add.l d2,d3
  1187.         move.l #$00000200,d4
  1188.         move.b bppatcount,d4
  1189.         add.l d3,d4
  1190.         move.l d4,a2
  1191.         add.l a0,a2
  1192.         moveq.l #0,d3 
  1193.         move.b (a2),d3
  1194.         tst.b d3
  1195.         bne.s bpskip4
  1196.         bra bpoptionals
  1197. bpskip4:    clr.w 12(a1)              ;Clear autoslide/autoarpeggio
  1198.         move.b 1(a2),d4
  1199.         and.b #15,d4
  1200.         cmpi.b #10,d4            ;Option 10->transposes off
  1201.         bne.s bp_do1
  1202.         move.b 2(a2),d4
  1203.         and.b #240,d4              ;Higher nibble=transpose
  1204.         bne.s bp_not1
  1205. bp_do1:        add.b tr,d3
  1206.         ext.w d3
  1207. bp_not1:    move.b d3,10(a1)         ; Voor Arpeggio's
  1208.         lea bpper(pc),a4
  1209.         lsl.w #1,d3
  1210.         move.w -2(a4,d3.w),(a1)
  1211.         bset #15,(a1)
  1212.         move.b #$ff,2(a1)
  1213.         moveq.w #0,d3
  1214.         move.b 1(a2),d3
  1215.         lsr.b #4,d3
  1216.         and.b #15,d3
  1217.         tst.b d3
  1218.         bne.s bpskip5
  1219.         move.b 3(a1),d3 
  1220. bpskip5:     move.b 1(a2),d4
  1221.         and.b #15,d4
  1222.         cmpi.b #10,d4             ;option 10
  1223.         bne.s bp_do2
  1224.         move.b 2(a2),d4
  1225.         and.b #15,d4
  1226.         bne.s bp_not2
  1227. bp_do2:        add.b st,d3
  1228. bp_not2:    cmpi.w #1,8(a1)
  1229.         beq.s bpsamplechange
  1230.         cmp.b 3(a1),d3
  1231.         beq.s bpoptionals
  1232. bpsamplechange:    move.b d3,3(a1)
  1233.         or.w d7,dma
  1234. bpoptionals:     moveq.l #0,d3
  1235.         moveq.l #0,d4
  1236.         move.b 1(a2),d3
  1237.         and.b #15,d3
  1238.         move.b 2(a2),d4
  1239.         cmpi.b #0,d3            ; Optionals Here
  1240.         bne.s notopt0
  1241.         move.b d4,11(a1)
  1242. notopt0:    cmpi.b #1,d3
  1243.         bne.s bpskip3
  1244.         move.w d4,8(a3)
  1245.         move.b d4,2(a1)         ; Volume ook in BPCurrent
  1246. bpskip3:    cmpi.b #2,d3              ; Set Speed
  1247.         bne.s bpskip9
  1248.         move.b d4,bpcount
  1249.         move.b d4,bpdelay
  1250. bpskip9:    cmpi.b #3,d3             ; Filter = LED control
  1251.         bne.s bpskipa
  1252.         tst.b d4
  1253.         bne.s bpskipb
  1254.         bset #1,$bfe001
  1255.         bra.s bpskip2
  1256. bpskipb:    bclr #1,$bfe001
  1257. bpskipa:    cmpi.b #4,d3             ; PortUp
  1258.         bne.s noportup
  1259.         sub.w d4,(a1)             ; Slide data in BPCurrent
  1260.         clr.b 11(a1)             ; Arpeggio's uit
  1261. noportup:    cmpi.b #5,d3             ; PortDown
  1262.         bne.s noportdn
  1263.         add.w d4,(a1)             ; Slide down
  1264.         clr.b 11(a1)
  1265. noportdn:    cmpi.b #6,d3            ; SetRepCount
  1266.         bne.s notopt6
  1267.         move.b d4,bprepcount
  1268. notopt6:    cmpi.b #7,d3            ; DBRA repcount
  1269.         bne.s notopt7
  1270.         subq.b #1,bprepcount
  1271.         beq.s notopt7
  1272.         move.w d4,bpstep
  1273. notopt7:    cmpi.b #8,d3            ;Set AutoSlide
  1274.         bne.s notopt8
  1275.         move.b d4,12(a1)
  1276. notopt8:    cmpi.b #9,d3            ;Set AutoArpeggio
  1277.         bne.s notopt9
  1278.         move.b d4,13(a1)
  1279. notopt9:
  1280. bpskip2:    lea $10(a3),a3
  1281.         lea $20(a1),a1
  1282.         asl.w #1,d7
  1283.         dbra d0,bploop3   
  1284.         addq.b #3,bppatcount
  1285.         cmpi.b #48,bppatcount
  1286.         bne.s bpskip8
  1287.         move.b #0,bppatcount
  1288.         addq.w #1,bpstep
  1289.         lea bpsong(pc),a0
  1290.         move.w 30(a0),d1
  1291.         cmp.w bpstep,d1
  1292.         bne.s bpskip8
  1293.         move.w #0,bpstep
  1294. bpskip8:    rts
  1295. bpplayit:    bclr #15,(a2)
  1296.         tst.l (a5)             ;Was EG used
  1297.         beq.s noeg1             ;No ??
  1298.         moveq.w #0,d3             ;Well then copy
  1299.         move.l (a5),a4             ;Old waveform back
  1300.         moveq #7,d7             ;to waveform tables
  1301. eg1loop:    move.l 4(a5,d3.w),(a4)+        ;Copy...
  1302.         addq.w #4,d3             ;Copy...
  1303.         dbra d7,eg1loop            ;Copy...
  1304. noeg1:        move.w (a2),6(a1)        ;Period from bpcurrent
  1305.         moveq.l #0,d7
  1306.         move.b 3(a2),d7            ;Instrument number
  1307.         move.l d7,d6             ;Also in d6
  1308.         lsl.l #5,d7             ;Header offset    
  1309.         lea bpsong(pc),a3
  1310.         cmpi.b #$ff,(a3,d7.w)        ;Is synthetic
  1311.         beq.s bpplaysynthetic        ;Yes ??
  1312.         clr.l (a5)             ;EG Off
  1313.         clr.b $1a(a2)             ;Synthetic mode off
  1314.         clr.w $1e(a2)             ;Lfo Off
  1315.         add.l #24,d7             ;24 is name->ignore
  1316.         lsl.l #2,d6             ;x4 for sample offset
  1317.         move.l #samples,a4
  1318.         move.l -4(a4,d6),d4        ;Fetch sample pointer
  1319.         beq.s bp_nosamp            ;is zero->no sample
  1320.         move.l d4,(a1)             ;Sample pointer in hardware
  1321.         move.w (a3,d7),4(a1)        ;length in hardware
  1322.         move.b 2(a2),9(a1)        ;and volume from bpcurrent
  1323.         cmpi.b #$ff,2(a2)        ;Use default volume
  1324.         bne.s skipxx             ;No ??
  1325.         move.w 6(a3,d7),8(a1)        ;Default volume in hardware
  1326. skipxx:     move.w 4(a3,d7),8(a2)        ;Length in bpcurrent
  1327.         moveq.l #0,d6
  1328.         move.w 2(a3,d7),d6        ;Calculate repeat
  1329.         add.l d6,d4
  1330.         move.l d4,4(a2)            ;sample start in bpcurrent
  1331.         cmpi.w #1,8(a2)            ;has sample repeat part
  1332.         bne.s bpskip6             ;Yes ??
  1333. bp_nosamp:    move.l #null,4(a2)        ;Play no sample
  1334.         bra.s bpskip10
  1335. bpskip6:    move.w 8(a2),4(a1)        ;Length to hardware
  1336.         move.l 4(a2),(a1)        ;pointer to hardware
  1337. bpskip10:    or.w #$8000,d1            ;Turn on DMA for this voice
  1338.         move.w d1,$dff096        ;Yeah, do it
  1339.         rts
  1340. bpplaysynthetic:move.b #$1,$1a(a2)        ;Synthetic mode on
  1341.         clr.w $e(a2)             ;EG Pointer restart
  1342.         clr.w $10(a2)             ;LFO Pointer restart
  1343.         clr.w $12(a2)             ;ADSR Pointer restart
  1344.         move.w 22(a3,d7.w),$14(a2)    ;EG Delay
  1345.         addq.w #1,$14(a2)        ;0 is nodelay
  1346.         move.w 14(a3,d7.w),$16(a2)    ;LFO Delay
  1347.         addq.w #1,$16(a2)        ;So I need correction
  1348.         move.w #1,$18(a2)        ;ADSR Delay->Start immediate
  1349.         move.b 17(a3,d7.w),$1d(a2)    ;EG OOC
  1350.         move.b 9(a3,d7.w),$1e(a2)    ;LFO OOC
  1351.         move.b 4(a3,d7.w),$1f(a2)    ;ADSR OOC
  1352.         move.b 19(a3,d7.w),$1c(a2)    ;Current EG Value
  1353.         move.l tables,a4        ; so far so good,now what ??
  1354.         moveq.l #0,d3            ;Pointer to waveform tables
  1355.         move.b 1(a3,d7.w),d3        ;Which waveform
  1356.         lsl.l #6,d3             ;x64 is length waveform table
  1357.         add.l d3,a4
  1358.         move.l a4,(a1)             ;Sample Pointer
  1359.         move.l a4,4(a2)            ;In bpcurrent
  1360.         move.w 2(a3,d7.w),4(a1)        ;Length in words
  1361.         move.w 2(a3,d7.w),8(a2)        ;Length in bpcurrent
  1362.         tst.b 4(a3,d7.w)        ;Is ADSR on
  1363.         beq.s bpadsroff            ;No ??
  1364.         move.l tables,a4        ;Tables
  1365.         moveq.l #0,d3
  1366.         move.b 5(a3,d7.w),d3        ;ADSR table number
  1367.         lsl.l #6,d3             ;x64 for length
  1368.         add.l d3,a4             ;Add it
  1369.         moveq.w #0,d3
  1370.         move.b (a4),d3             ;Get table value
  1371.         add.b #128,d3             ;I want it from 0..255
  1372.         lsr.w #2,d3             ;Divide by 4->0..63
  1373.         cmpi.b #$ff,2(a2)
  1374.         bne.s bpskip99
  1375.         move.b 25(a3,d7.w),2(a2)
  1376. bpskip99:    moveq.w #0,d4
  1377.         move.b 2(a2),d4            ;Default volume
  1378.         mulu d4,d3             ;default maal init volume
  1379.         lsr.w #6,d3             ;divide by 64
  1380.         move.w d3,8(a1)            ;is new volume
  1381.         bra.s bpflipper
  1382. bpadsroff:    move.b 2(a2),9(a1)
  1383.         cmpi.b #$ff,2(a2)
  1384.         bne.s bpflipper            ;No ADSR
  1385.         move.b 25(a3,d7.w),9(a1)    ;So use default volume
  1386. bpflipper:    move.l 4(a2),a4            ;Pointer on waveform
  1387.         move.l a4,(a5)             ;Save it
  1388.         moveq.w #0,d3             ;Save Old waveform
  1389.         moveq #7,d4             ;data in bpbuffer
  1390. eg2loop:    move.l (a4,d3.w),4(a5,d3.w)
  1391.         addq.w #4,d3             ;Copy         
  1392.         dbra d4,eg2loop
  1393.         tst.b 17(a3,d7.w)        ;EG off
  1394.         beq bpskip10            ;Yes ??
  1395.         tst.b 19(a3,d7.w)        ;Is there an init value for EG
  1396.         beq bpskip10            ;No ??
  1397.         moveq.l #0,d3
  1398.         move.b 19(a3,d7.w),d3
  1399.         lsr.l #3,d3             ;Divide by 8 ->0..31
  1400.         move.b d3,$1c(a2)        ;Current EG Value
  1401.         subq.l #1,d3             ;-1,DBRA correction
  1402. eg3loop:    neg.b (a4)+
  1403.         dbra d3,eg3loop
  1404.         bra bpskip10
  1405. bpplayarp:    lea bpper(pc),a4
  1406.         ext.w d4
  1407.         asl.w #1,d4
  1408.         move.w -2(a4,d4.w),6(a1)
  1409.         rts
  1410. bpsynth:    move.l #3,d0
  1411.         lea bpcurrent(pc),a2
  1412.         lea $dff0a0,a1
  1413.         lea bpsong(pc),a3
  1414.         lea bpbuffer(pc),a5
  1415. bpsynthloop:    tst.b $1a(a2)             ;Is synthetic sound
  1416.         beq.s bpnosynth            ;No ??
  1417.         bsr.s bpyessynth            ;Yes         
  1418. bpnosynth:    lea $24(a5),a5
  1419.         lea $20(a2),a2
  1420.         lea $10(a1),a1
  1421.         dbra d0,bpsynthloop
  1422.         rts
  1423. bpyessynth:    moveq.w #0,d7
  1424.         move.b 3(a2),d7            ;Which instr. was I playing
  1425.         lsl.w #5,d7             ;x32, is length of instr.
  1426.         tst.b $1f(a2)             ;ADSR off
  1427.         beq.s bpendadsr            ;Yes ??
  1428.         subq.w #1,$18(a2)        ;Delay,May I
  1429.         bne.s bpendadsr            ;No ??
  1430.         moveq.l #0,d3
  1431.         move.b 8(a3,d7.w),d3
  1432.         move.w d3,$18(a2)        ;Reset Delay Counter
  1433.         move.l tables,a4
  1434.         move.b 5(a3,d7.w),d3        ;Which ADSR table
  1435.         lsl.l #6,d3             ;x64
  1436.         add.l d3,a4             ;This is my table
  1437.         move.w $12(a2),d3        ;Get ADSR table pointer
  1438.         moveq.w #0,d4
  1439.         move.b (a4,d3.w),d4        ;Value from table
  1440.         add.b #128,d4             ;Want it from 0..255
  1441.         lsr.w #2,d4             ;And now from 0..63
  1442.         moveq.w #0,d3
  1443.         move.b 2(a2),d3            ;Current Volume
  1444.         mulu d3,d4             ;MultiPly with table volume
  1445.         lsr.w #6,d4             ;Divide by 64=New volume
  1446.         move.w d4,8(a1)            ;Volume in hardware
  1447.         addq.w #1,$12(a2)        ;Increment of ADSR pointer
  1448.         move.w 6(a3,d7.w),d4        ;Length of adsr table
  1449.         cmp.w $12(a2),d4        ;End of table reached
  1450.         bne.s bpendadsr            ;No ??
  1451.         clr.w $12(a2)             ;Clear ADSR Pointer
  1452.         cmpi.b #1,$1f(a2)        ;Once
  1453.         bne.s bpendadsr            ;No ??
  1454.         clr.b $1f(a2)             ;ADSR off
  1455. bpendadsr:    tst.b $1e(a2)             ;LFO On
  1456.         beq.s bpendlfo            ;No ??
  1457.         subq.w #1,$16(a2)        ;LFO delay,May I
  1458.         bne.s bpendlfo            ;No
  1459.         moveq.l #0,d3
  1460.         move.b 16(a3,d7.w),d3
  1461.         move.w d3,$16(a2)        ;Set LFO Count
  1462.         move.l tables,a4
  1463.         move.b 10(a3,d7.w),d3        ;Which LFO table
  1464.         lsl.l #6,d3             ;x64
  1465.         add.l d3,a4
  1466.         move.w $10(a2),d3        ;LFO pointer
  1467.         moveq.l #0,d4
  1468.         move.b (a4,d3.w),d4        ;That's my value
  1469.         ext.w d4             ;Make it a word
  1470.         ext.l d4             ;And a longword
  1471.         moveq.l #0,d5
  1472.         move.b 11(a3,d7.w),d5        ;LFO depth
  1473.         tst.b d5
  1474.         beq.s bpnotx
  1475.         divs d5,d4             ;Calculate it
  1476. bpnotx:        move.w (a2),d5             ;Period
  1477.         add.w d4,d5             ;New Period
  1478.         move.w d5,6(a1)            ;In hardware
  1479.         addq.w #1,$10(a2)        ;Next position
  1480.         move.w 12(a3,d7.w),d3        ;LFO table Length
  1481.         cmp.w $10(a2),d3        ;End Reached
  1482.         bne.s bpendlfo            ;NO ??
  1483.         clr.w $10(a2)             ;Reset LFO Pointer
  1484.         cmpi.b #1,$1e(a2)        ;Once LFO
  1485.         bne.s bpendlfo            ;NO ??
  1486.         clr.b $1e(a2)             ;LFO Off
  1487. bpendlfo:    tst.b $1d(a2)             ;EG On
  1488.         beq bpendeg             ;No ??
  1489.         subq.w #1,$14(a2)        ;EG delay,May I
  1490.         bne bpendeg             ;No
  1491.         tst.l (a5)
  1492.         beq.s bpendeg
  1493.         moveq.l #0,d3
  1494.         move.b 24(a3,d7.w),d3
  1495.         move.w d3,$14(a2)        ;Set EG Count
  1496.         move.l tables,a4
  1497.         move.b 18(a3,d7.w),d3        ;Which EG table
  1498.         lsl.l #6,d3             ;x64
  1499.         add.l d3,a4
  1500.         move.w $e(a2),d3        ;EG pointer
  1501.         moveq.l #0,d4
  1502.         move.b (a4,d3.w),d4        ;That's my value
  1503.         move.l (a5),a4             ;Pointer to waveform
  1504.         add.b #128,d4             ;0..255
  1505.         lsr.l #3,d4             ;0..31
  1506.         moveq.l #0,d3
  1507.         move.b $1c(a2),d3        ;Old EG Value
  1508.         move.b d4,$1c(a2)
  1509.         add.l d3,a4             ;WaveForm Position
  1510.         move.l a5,a6             ;Buffer
  1511.         add.l d3,a6             ;Position
  1512.         addq.l #4,a6             ;For adress in buffer
  1513.         cmp.b d3,d4             ;Compare old with new value
  1514.         beq.s bpnexteg            ;no change ??
  1515.         bgt bpishigh            ;new value is higher
  1516. bpislow:    sub.l d4,d3             ;oldvalue-newvalue
  1517.         subq.l #1,d3             ;Correction for DBRA
  1518. bpegloop1a:    move.b -(a6),d4
  1519.         move.b d4,-(a4)
  1520.         dbra d3,bpegloop1a  
  1521.         bra.s bpnexteg
  1522. bpishigh:    sub.l d3,d4             ;Newvalue-oldvalue
  1523.         subq.l #1,d4             ;Correction for DBRA
  1524. bpegloop1b:    move.b (a6)+,d3
  1525.         neg.b d3
  1526.         move.b d3,(a4)+            ;DoIt
  1527.         dbra d4,bpegloop1b
  1528. bpnexteg:    addq.w #1,$e(a2)        ;Next position
  1529.         move.w 20(a3,d7.w),d3        ;EG table Length
  1530.         cmp.w $e(a2),d3            ;End Reached
  1531.         bne.s bpendeg             ;NO ??
  1532.         clr.w $e(a2)             ;Reset EG Pointer
  1533.         cmpi.b #1,$1d(a2)        ;Once EG
  1534.         bne.s bpendeg             ;NO ??
  1535.         clr.b $1d(a2)             ;EG Off
  1536. bpendeg:    rts
  1537.  
  1538. null:        dc.w 0
  1539. bpcurrent:    dc.w 0,0            ;periode,instrument =(volume.b,instr nr.b)
  1540.         dc.l null            ;start
  1541.         dc.w 1                ;length (words)
  1542.         dc.b 0,0,0,0             ;noot,arpeggio,autoslide,autoarpeggio
  1543.         dc.w 0,0,0            ;EG,LFO,ADSR pointers
  1544.         dc.w 0,0,0            ;EG,LFO,ADSR count
  1545.         dc.b 0,0            ;Synthetic yes/no, Volume Slide
  1546.         dc.b 0,0            ;Current EG value,EG OOC
  1547.         dc.b 0,0            ;LFO OOC,ADSR OOC
  1548.  
  1549.         dc.w 0,0
  1550.         dc.l null
  1551.         dc.w 1,0,0
  1552.         dc.w 0,0,0,0,0,0,0,0,0
  1553.  
  1554.         dc.w 0,0
  1555.         dc.l null
  1556.         dc.w 1,0,0
  1557.         dc.w 0,0,0,0,0,0,0,0,0
  1558.  
  1559.         dc.w 0,0
  1560.         dc.l null
  1561.         dc.w 1,0,0
  1562.         dc.w 0,0,0,0,0,0,0,0,0
  1563.  
  1564. bpstep:        dc.w 0
  1565. bppatcount:    dc.b 0
  1566. st:        dc.b 0
  1567. tr:        dc.b 0
  1568. bpcount:    dc.b 1
  1569. bpdelay:    dc.b 6
  1570. arpcount:    dc.b 1
  1571. bprepcount:    dc.b 1
  1572. numtables:    dc.b 0
  1573.  
  1574.         even
  1575.  
  1576. dma:        dc.w 0
  1577. tables:        dc.l 0
  1578.  
  1579. bpbuffer:    dcb.b 144,0
  1580.         dc.w 6848,6464,6080,5760,5440,5120,4832,4576,4320,4064,3840,3616
  1581.         dc.w 3424,3232,3040,2880,2720,2560,2416,2288,2160,2032,1920,1808
  1582.         dc.w 1712,1616,1520,1440,1360,1280,1208,1144,1080,1016,0960,0904
  1583.  
  1584. bpper:        dc.w 0856,0808,0760,0720,0680,0640,0604,0572,0540,0508,0480,0452
  1585.         dc.w 0428,0404,0380,0360,0340,0320,0302,0286,0270,0254,0240,0226
  1586.         dc.w 0214,0202,0190,0180,0170,0160,0151,0143,0135,0127,0120,0113
  1587.         dc.w 0107,0101,0095,0090,0085,0080,0076,0072,0068,0064,0060,0057
  1588.  
  1589. samples:    dcb.l 15,0
  1590.  
  1591. bpsong:        incbin "df1:modules/bp.NEVERENDING"
  1592.  
  1593.         
  1594.  
  1595.  
  1596.  
  1597.